Identifying future location and providing path crossing indications

ABSTRACT

A user of a mobile device may use the technique to obtain future location-based situation awareness, e.g., a future location route displayed on the user&#39;s mobile device. That future location route comprises the user&#39;s future locations through time and space, e.g., a set of planned meetings at successive locations in a geographic area. A service that provides the user&#39;s mobile device with the future location route may also alert the user of potential threats to the user&#39;s planned activities, such as a restaurant being over-booked. On a permission basis, the user&#39;s mobile device may also receive a future location route for at least one other person associated with the user in a social network. The other person&#39;s future location route may be overlaid on the user&#39;s route so that one or both individuals receive advance notifications of their potential to have their respective paths “crossing” during a future time period.

This application is based on and claims priority to Ser. No. 61/542,165,filed Oct. 1, 2011.

BACKGROUND

Location-based services for mobile phones focus on current location.These services are popular, and they include navigation, traffic,weather, coupons, travel check-in, restaurant reviews, photo sharing,local discovery (convenience store), nearest ATM, show-times, gaming,enhanced 911, people locators, and social networking. If a person'splanned, routine and extemporaneous (errands) future locations can bedetermined, new location-based services may be optimized andpersonalized to solve important problems.

People enjoy maintaining status updates on social networking serviceslike Twitter and Facebook that tell their contacts what they are doing,reading or what they are thinking about. Some status updates are taggedwith latitude/longitude coordinates providing geographic position. Somesocial networking sites have embedded calendars that enable people toshare social event details (parties, public functions, etc.) with theirfriends.

People use location-specific status reports to enable meeting friends orlike-minded people. People can use status updates to say where they willbe in the future. People can use such services to coordinate travelplans with the hope of being at the same place at the same time.

Future location, however, is very sensitive information. In somecircumstances people want to privately share that location informationwith select people (for instance that they plan to go to the movieswhich is shared with close friends). In some circumstances they want tobroadcast future location to as large a following as possible (acelebrity publicizing a book signing tour). Sharing future location withfriends and colleagues makes it easier to meet up as friends can adjusttheir plans to make meeting up possible. Precisely calculating futurelocation can also make it easier to receive relevant recommendations,coupons and other benefits allowing users to make best use of theirprecious time. To date, location-based applications and services havenot provided solutions that adequately address future location.

BRIEF SUMMARY

The subject matter herein is a technique for predicting or estimatingthe location of people in the future (“future location”).

A user of a mobile device may use the technique to obtain futurelocation-based situation awareness, e.g., a future location route thatis displayed on the user's mobile device. That future location routecomprises the user's future locations through time and space, e.g., aset of planned meetings at successive locations in a given geographicarea such as a set of city blocks. A service that provides the user'smobile device with the future location route may also alert the user ofpotential threats to the user's planned activities, such as a restaurantbeing over-booked. On a permission basis, the user's mobile device mayalso receive a future location route for at least one other personassociated with the user in a social network (e.g., a Facebook® friend).The other person's future location route may be overlaid on the user'sroute so that one or both individuals receive advance notifications oftheir potential to have their respective paths being “crossed” during afuture time period.

The foregoing has outlined some of the more pertinent features of thesubject matter. These features should be construed to be merelyillustrative.

BRIEF DESCRIPTION OF THE DRAWINGS

For a more complete understanding of the present invention and theadvantages thereof, reference is now made to the following descriptionstaken in conjunction with the accompanying drawings, in which:

FIG. 1 is an exemplary system of computing entities in which the futurelocation-based methods of the disclosure may be implemented;

FIG. 2 illustrates a representative future location route map generatedby the system;

FIG. 3 illustrates a representative interface by which a user mayidentify one or more preferences to select persons or groups of personswhose presence at given distances and/or times are to be brought to theuser's attention;

FIG. 4 illustrates a representative output of the system describing auser's future location route and potential overlaps with otherindividuals that are associated with the user;

FIG. 5 illustrates how future location routes may be overlaid upon oneanother to facilitate the notifications to one or both of the users; and

FIG. 6 illustrates a further example of a mobile device application andits associated interfaces.

DETAILED DESCRIPTION

According to the subject matter herein, the future location platform isfacilitated, preferably through a service provider. This is not alimitation, as the techniques may be implemented as a standalone productor service.

The service provider may be the same entity that provides the end userservice, or any other entity. In a representative embodiment, theservice provider operates a web site that is Internet-accessible througha web browser on the mobile device (or other machine such as the enduser's PC).

In a representative embodiment, shown in FIG. 1, a “system” thatimplements the subject matter of this disclosure includes a mobiledevice client 100, a server 102, and a third party integration layer104. The integration layer 104 may comprise part of the server 102 ifthe service provider has access to the location and traffic data (aswill be described below). The mobile device client preferably isdownloaded to and installed in the mobile device in any convenientmanner. In one embodiment, the end user opens his or her device browserto the service provider web site and selects a link to download andinstall the client. Alternatively, the client may be provided asoriginal equipment on the mobile device or otherwise pushed to andinstalled in the device in any convenient manner. The end user mayobtain the client by responding to an SMS or other invitation.

As shown in FIG. 1, the client, server and integration layers eachcomprise a number of functional components. This representation is meantto be for convenience of illustration and description, and it should notbe taken to limit the scope of the invention as one or more of thefunctions may be combined. Typically, these components are implementedin software (as a set of processor-executable computer instructions,associated data structures, and the like). One or more of the functionsmay be combined or otherwise implemented in any convenient manner (e.g.,in hardware, in firmware, in combined hardware and software, or thelike). The mobile device typically includes a micro-browser or othergraphics rendering engine for displaying information to the end user inthe usual manner. The device is Internet-accessible and interacts withthe server 102 using known Internet protocols such as HTTP, HTTPS, andthe like. The server 102 is shown as a single device but this is not arequirement either; one or more machines, programs, processes, or othercode may comprise the server and be executed on one or more machines (inone or more networked locations).

A representative mobile device is a smartphone or tablet, such as theiPhone® (or iPad®) or an Android™-based phone, but this is not alimitation. Such devices typically comprise a CPU (central processingunit), such as any Intel- or AMD-based chip, computer memory, such asRAM, and a drive. The device software includes an operating system(e.g., Apple iOS, Android, or the like), and generic supportapplications and utilities. The device may also include a graphicsprocessing unit (GPU). Such a mobile device also includes atouch-sensing device or interface configured to receive input from auser's touch and to send this information to the processor.

Generalizing, the mobile device is any wireless client device, e.g., acellphone, pager, a personal digital assistant (PDA, e.g., with GPRSNIC), a mobile computer with a smartphone client, or the like. Othermobile devices in which the technique may be practiced include anyaccess protocol-enabled device (e.g., a Blackberry® device, anAndroid™-based device, or the like) that is capable of sending andreceiving data in a wireless manner using a wireless protocol. Typicalwireless protocols are: WiFi, GSM/GPRS, CDMA or WiMax. These protocolsimplement the ISO/OSI Physical and Data Link layers (Layers 1 & 2) uponwhich a traditional networking stack is built, complete with IP, TCP,SSL/TLS and HTTP.

In a representative embodiment, the mobile device is a cellulartelephone that operates over GPRS (General Packet Radio Service), whichis a data technology for GSM networks. In addition to a conventionalvoice communication, a given mobile device can communicate with anothersuch device via many different types of message transfer techniques,including SMS (short message service), enhanced SMS (EMS), multi-mediamessage (MMS), email, WAP, paging, or other known or later-developedwireless data formats. Generalizing, a mobile device as used herein is a3G- (or next generation) compliant device that includes a subscriberidentity module (SIM), which is a smart card that carriessubscriber-specific information, mobile equipment (e.g., radio andassociated signal processing devices), a man-machine interface (MMI),and one or more interfaces to external devices (e.g., computers, PDAs,and the like). The techniques disclosed herein are not limited for usewith a mobile device that uses a particular access protocol. The mobiledevice typically also has support for wireless local area network (WLAN)technologies, such as Wi-Fi. WLAN is based on IEEE 802.11 standards.

Generalizing, a representative infrastructure in which the method may bepracticed is a service. Without meant to be limiting, a representativetechnology platform that implements the service comprises machines,systems, sub-systems, applications, databases, interfaces and othercomputing and telecommunications resources. In one particularembodiment, a service provider comprises an Internet Protocol (IP)switch, a set of one or more web server machines, a set of one moreapplication server machines, a database management system, and a set ofone or more administrative server machines. A representative web servermachine comprises commodity hardware (e.g., Intel-based), an operatingsystem such as Linux, and a web server such as Apache 2.x. Arepresentative application server machine comprises commodity hardware,Linux, and an application server such as WebLogic 9.2 (or later). Thedatabase management system may be implemented as an Oracle (orequivalent) database management package running on Linux. Theinfrastructure may include a name service, FTP servers, administrativeservers, data collection services, management and reporting servers,other backend servers, load balancing appliances, other switches, andthe like. Each machine typically comprises sufficient disk and memory,as well as input and output devices. The software environment on eachmachine includes a Java virtual machine (JVM) if control programs arewritten in Java. Generally, the web servers handle incoming requests,and they export a management interface. The application servers managethe basic functions of the service including, without limitation,business logic. As will be described, the application servers may alsoimplement the automated techniques of this disclosure.

One or more functions of such a technology platform may be implementedin a cloud-based architecture. As is well-known, cloud computing is amodel of service delivery for enabling on-demand network access to ashared pool of configurable computing resources (e.g. networks, networkbandwidth, servers, processing, memory, storage, applications, virtualmachines, and services) that can be rapidly provisioned and releasedwith minimal management effort or interaction with a provider of theservice. Available services models that may be leveraged in whole or inpart include: Software as a Service (SaaS) (the provider's applicationsrunning on cloud infrastructure); Platform as a service (PaaS) (thecustomer deploys applications that may be created using provider toolsonto the cloud infrastructure); Infrastructure as a Service (IaaS)(customer provisions its own processing, storage, networks and othercomputing resources and can deploy and run operating systems andapplications).

The platform may comprise co-located hardware and software resources, orresources that are physically, logically, virtually and/orgeographically distinct. Communication networks used to communicate toand from the platform services may be packet-based, non-packet based,and secure or non-secure, or some combination thereof.

More generally, the techniques described herein are provided using a setof one or more computing-related entities (systems, machines, processes,programs, libraries, functions, or the like) that together facilitate orprovide the described functionality described above. In a typicalimplementation, a representative machine on which the software executescomprises commodity hardware, an operating system, an applicationruntime environment, and a set of applications or processes andassociated data, that provide the functionality of a given system orsubsystem. As described, the functionality may be implemented in astandalone machine, or across a distributed set of machines.

The operation of the system is best described by the following example.As seen in FIG. 1, the client 100 and the server 102 include variousfunctional components and associated data stores to facilitate theoperation. The operation of the disclosed method may be carried outusing system components other than as shown in FIG. 1.

In this example architecture, the client 100 includes a future locationclient Comm Manager 114, and the server includes its own connectedcalendar client manager 103. These data stores are used to facilitatethe creation and display of a future location platform. The server 102also includes a database (e.g. MySQL) 105 for storing locationinformation, as well as a user profile database 107 for storing userpreference data. The integration layer provides one or more applicationprogramming interfaces (APIs), such as a geo-coding API 109 forproviding the server with information about the destination location, aswell as a mapping and traffic API 111 for providing the server with mapdata and real-time (or historic) traffic data. The geo-coding APIprovides destination location coordinates, preferably by reversegeo-coding addresses in the end user's PIM. The mobile device actuallocation is provided using GPS, A-GPS, or some other data service, whichobtains the device location is a known manner. Data is provided (via API111) from a data service provider or obtained by the applicationnatively. Of course, any convenient data services may be used orotherwise integrated into the connected calendar offering.

A user of the mobile device enters an appointment event in his or hisPC- or web-based calendar 108. Typically, the event data includes fieldsfor date, time, activity, and location. Preferably, the location is astreet address. The event data may include groups with whom the eventmay be shared and may be categorized as work, sport, entertainment orother category set in preferences. Instead of manual entry, a serviceprovider or other source may be used to obtain a destination locationaddress upon receiving some request for such information. For instance,a social network (e.g., Facebook) may provide an event from which thefuture location and time maybe determined—a link to a website with anaddress and time for instance. Future location may be determined from anairport code or a flight code with departure and arrival times, or in asimilar manner.

The PC- or web-based calendar 108 at some point is synchronized to amobile PIM native calendar 110. Of course, the appointment event datamay be entered into the PIM native calendar 110 directly. A Client CommManager 114 reads the mobile device calendar 110 over a connection, suchas an industry standard JSR 75 link. The appointment event data isassimilated by a Client Comm Manager 114, which transfers the data tothe server 102, preferably via HTTP. This data is received at the server102 and processed by an agenda analyzer component 116. The agendaanalyzer 116 provides the processed data to a parse engine 118, which isalso connected to the third party integration layer 104, preferably viaXML. The geo-coding API 109 takes unstructured address information,assesses its quality, adds one or more geo-codes, and structures thatdata into XML. The structured and geo-code data is stored in thedatabase 105.

Meanwhile, a set of user preferences (such as locations of home, work,daily commute times of arrival), security data, and current location(typically, the mobile device last-known location) data are uploaded tothe server, such as by a preferences specification component 113operating in the client 100. This preference data is stored in the userprofile database 107. The user's profile database 107 also organizes theuser's social graph, according to the user's preferences. According tothe user's relationship with people in their social graph, the userchooses people whose plans they wish to subscribe to; and organizepeople who follow the user's plans into groups. Third party socialnetworking APIs 122 may be utilized to facilitate the organization ofthe social graph.

The FutureLocation Engine 119 determines the FutureLocation path,preferably as follows. It combines planned locations uploaded from theclient calendar 110 with routine locations determined from addressesentered into the preferences, and the times associated with thoseentries and extemporaneous locations broadcasted through social networksdetermines the chronological order of future locations through which theuser will travel. For instance if an appointment is prior to the normalarrival time at work, the FutureLocation engine assumes the user willhave traveled from home to that first appointment. If the lastappointment is after work but closer to the work address, then the homeaddress the logic determines the user will depart from the work addressto the last appointment. Of course, these are just representativeexamples. The FutureLocation Engine logic calculates a user's futurelocations through time and space and records these as a series of points(e.g., time, latitude and longitude or t, x, y, z points). Using thesefuture location points, the mapping engine determines the route to betraveled between each successive location. By subtracting the predictedduration of the trip from the planned arrival times, the user'sdeparture time is calculated. This data is passed to the SpaceTimeEngine 121. The SpaceTime engine 121 represents the user's path throughtime and space recording data points at 15 minute intervals (or someother time interval) between departure time and arrival time. TheSpacetime Engine uses logic to determine if the user remains at thelocation, for instance, arriving home with no planned appointments thatevening (in this example, the spacetime coordinate remains unchangedwhile the user is at home). The Spacetime path is passed back to thedatabase 105 and stored. It is possible to use linear lines betweenfuture locations, and not the detailed routes following roads, to makethe calculations simpler.

Preferably, each event is private or is identified by a social grouptag. If a user's event is tagged with a group the social engine 128determines the group and the constituent members of the group, orfriends. A record of the event is placed in the database 105 for eachfriend, and these items make up a friend plan, which includesopportunities to socially interact without necessarily being acommitment. These events can also be organized as lists under activitycategories as mentioned above.

The Path Crossing Engine assimilates the future location paths for auser and compares the future location paths to that of their friends,social graph or wider groups of like minded people. By day, hour orminute increments the distance, or proximity, between the futurelocations of friends is measured. Paths may physically cross or may comeclose to crossing the tangent of the other user's path. Timing may meanthat paths are crossed but temporally not synchronized. The PathCrossing engine provides opportunities for meeting or introductionsbased on the most convenient time, place or gap in their mutualschedules. For instance, FIG. 2 shows the user arrives at Logan airporton the “red eye” flight at 6:30 am. The user has 3 meetings that day (inMalden, in Cambridge, and in downtown Boston). These meetings may beshared or private. The Path Crossing engine indexes the future locationtable and compares all locations for people in the user's social graph.

Thresholds may be set for relationship, distance and timing, e.g. usinga user interface such as shown in FIG. 3, which is representative. Forinstance, using an input menu, the user may select whether the contactis a close friend, an acquaintance or a business contact, and/or whethersuch person is going to be within certain select distances (e.g., 250ft, 500 ft, 1000 ft) or times (within 15 minutes, 30 minutes or 1 hour,etc.) as the user continues through his or her day.

In the FIG. 2 example, and on the first leg of the trip, from Loganairport to Malden, the user's path is crossed by Jeremy, who the userhas identified as a close friend. The proximity is within 200 ft and 15minutes. The service provides the user with an indication of thepotential crossing. The user has the opportunity to send a message andarrange to meet in person. Alternatively, the algorithm may calculatethe time when the shortest distance separates the friends. The algorithmmay also calculate the time a given number (e.g., three (3) or morefriends) are in the closest physical or temporal proximity. The PathCrossing engine may also provide appropriate notifications if userschange their plans or run late.

As an alternative, the Path Crossing engine may access the user'saddress book or online directory and indicate when a user may be nearbya customer office or a client's home.

As an alternative, the Path Crossing engine may access locationinformation, from third party APIs, indicating an individual habituallyvisits a location, like a coffee shop, or the like, and then present aprobability that the friend may be at some particular intersection.

The interface managers manage personal 123, social 124, situational 125,and contextual 126 data relevant to events and future locations.

The personal interface manager 123 indexes the database for personalcalendar events. Other relevant information may be assimilated, forinstance time and location-based weather, other friends that have joinedthe event or trip time or distance information added from the mappingengine 120.

The social interface manager 124 indexes the database for friend'sevents, i.e., events that have been shared but are not subscribed. Otherrelevant information is included in the fields including, for example,who created the event, who is subscribed to the event, weather and tripinformation, and so forth. The social interface manager may organizesocial events into event categories as mentioned above. The distance toa friend's event may be used to determine the importance of theopportunity and its display may be adjusted through the userpreferences. The social interface manager 124 may also present pathcrossing opportunities determined by the Path Crossing engine. Aspreviously explained, there may be preferences set to determine thedistance or time threshold under which a friend triggers a path crossingopportunity or the number of such events.

The situational interface manager 125 draws from the database 105 thefuture locations and the time-space path coordinates. An interactionwith the mapping engine overlays maps, routes, predicted traffic andpredicted weather along the time space calendar path. Undercircumstances when the user's time space path intersects with severeweather (or other similar type of information), the alert engine 127 isprogrammed to push a notification to the user's device. For example,assume that the calendar event indicates a flight on the followingThursday and thunderstorms are predicted; in such case a notificationmay be provided. Such information may be received from a third partyflight status API 132, which indicates a flight status is changed fromon time to delayed.

The contextual interface manager 126 draws from the database 105 thefuture locations and the time-space path coordinates. An interactionwith the mapping engine 120 overlays maps and routes accesses thirdparty APIs for relevant entertainment events 129, advertisements 130 andcoupons 131. Relevance is driven by time, location and subject line ofevent or set by a user's preferences.

While the above describes personal, situational, contextual and socialinterfaces as separate, it should be understood such operations may bemixed or layered according to the preferences of the user.

The server communicates to the client via a client manager, and in somecircumstances mentioned above via the alert engine 127. The clientmap/data manager 101 presents data on the display according to thedesign of the graphic user interface.

FIG. 4 illustrates a display “crossing paths” tab that may be displayedon the user's device when the user logs into the service. This tabprovides an agenda display format. In particular, a tab displays,preferably in chronological order, all the event on the user's timeline(e.g., his or her events, friend's events, crossing path opportunities,and the like). Color-coding may be used to highlight differences.

FIG. 5 is another example of a path crossing display that may be made toone or both of the individuals whose paths are anticipated to intersect(based on the information received and processed by the locationplatform).

FIG. 6 illustrates a further example showing three (3) display screensthat are available in a mobile device application that implements theclient-side of the future location functionality. The left portionillustrates preferences for path crossings. The check boxes indicatewhich groups of friends that a user wishes to be alerted (of pathcrossing opportunities). The drop box indicates the distance (e.g., inmiles) within which a friend must travel to trigger an alert or othernotification. The middle portion of the figure illustrates the user'sschedule in an agenda format. In this agenda format, events are sharedwith friends and profile pictures (of the friends) subscribing to theevent are shown below the subject line. Each event shows subject, timeand date, time and location-based weather, the friends subscribed to theevent, and so forth. The display on the right portion of the drawingshows the actual locations of each event for day, e.g., as map pins. Thedisplay also shows the route that connects the dots, as well as thefriends whom the path crossing engine has determined will cross theroute (when and where).

Of course, the above example screen layouts are merely representativeand should not be taken to limit the subject matter of this disclosure,as any particular output format for the mobile device may be used. Thus,for example, an audible or aural indication may be provided for anevent, a path crossing opportunity, or the like.

Path crossing settings can be changed in the user's “profile.” As hasbeen described, preferably the service functions separately to events. Apath crossing opportunity may occur when the user is between two privateevents. The user may choose “groups” to be included in the settings, orhe or she may switch off the function. Groups are a way to share someplans with some friends, other plans with other friends or keep planstotally private. So, if the user shares an event, like going to themovies, with his or her “close friends” group, only people in the “closefriends” group will be able to see that event on their “Friends' Plans”page. The service may provide several default groups: family, closefriends, friends and co-workers. The user may add more groups go into“profile”>“Groups” and add a group. Then the new group becomes availableand the user can select friends to add to his or her new group.

A “Followers” function may also be implemented. Followers are people whohave chosen to follow a user's plans. They may be friends or they may bepeople the user vaguely knows or does not know at all. Preferably, theuser will be notified if he or she has a new follower. Until the userassigns the new follower to a group, preferably the follower cannot seethe user's plans (unless the event is a public plan). When the userassigns the follower to a group they can only see events that have beentagged to be visible to that group. If the user wishes to “Block”someone, he or she can select a “Block” tab next to their name. It isalso possible to Un-Block someone later.

As noted, preferably the user can also vary the distance, physicalproximity threshold when the path crossing notification will beactivated.

The described technique provides a privacy-first, geo-social calendarthat allows a user to see when his or her path will cross those of hisor her friends without having to share specific appointments (unlessdesired to do so). The service presents the user's calendar (e.g., in adaily mode) and shows where friends may be nearly in the future.

In this example, the service is set to notify the user if a friend iswithin a one mile radius of the user's planned route. There is an entryin the user's plans agenda view that says “next Thursday at 1.46 pm,David will be within 1 mile.” An icon is displayed on the map. David isnot at that location now, the icon is placed roughly where David will beassuming he undertakes his own travel plans. David's precise location isobfuscated for privacy.

Preferably, events are added to the path crossing service, e.g., viaGoogle calendar, or added directly. By default, the service assumesevery event is private, and no one can see this event unless the userchooses to make the event visible. To share an event with someone, theuser chooses one or more groups to share that event with, or he or shecan make it visible to anyone.

The future location path may be annotated with additional information,such as locations (e.g., bars, coffee shops, restaurants, etc.) that areroutinely visited so that a more detailed or fine-grained pattern offuture locations may be used to facilitate the future path generationand path crossing determination.

The techniques herein provide an additional advantage of enablingprediction of a start location for future travel.

The path crossing feature of this disclosure is not limited to a usercrossing his or her path with another individual; the techniques may beused to indicate to the user that his or her future path may be crossingwith a particular brand, given weather, a purchase opportunity, a givengeo-temporal event or occurrence, combinations thereof, or the like.Further, the path crossing engine may determine that a particular futureroute intersects with one or more people, events, and combinationsthereof.

The platform and techniques described above provide many advantages. Theplatform enables predicting or estimating the location of people in thefuture. Information is updated asynchronously by permitted entities,preferably on an opt-in basis, or from publicly-available sources.Because the user has identified a future activity, a time and a place,and because the service preferably utilizes “push” technology, theservice may alert users of potential threats to their plan and urge themto take action immediately. For instance, a restaurant or theatre may beclose to capacity and require action or alternative plans. In this way,and has been described, the future location platform provides a powerfulcall to action and the gateway to many varied commercial opportunities.

While the above describes a particular order of operations performed bycertain embodiments of the invention, it should be understood that suchorder is exemplary, as alternative embodiments may perform theoperations in a different order, combine certain operations, overlapcertain operations, or the like. References in the specification to agiven embodiment indicate that the embodiment described may include aparticular feature, structure, or characteristic, but every embodimentmay not necessarily include the particular feature, structure, orcharacteristic.

While the disclosed subject matter has been described in the context ofa method or process, the subject disclosure also relates to apparatusfor performing the operations herein. This apparatus may be speciallyconstructed for the required purposes, or it may comprise ageneral-purpose computer selectively activated or reconfigured by acomputer program stored in the computer. Such a computer program may bestored in a computer readable storage medium, such as, but is notlimited to, any type of disk including an optical disk, a CD-ROM, and amagnetic-optical disk, a read-only memory (ROM), a random access memory(RAM), a magnetic or optical card, or any type of media suitable forstoring electronic instructions, and each coupled to a computer systembus.

While given components of the system have been described separately, oneof ordinary skill will appreciate that some of the functions may becombined or shared in given instructions, program sequences, codeportions, and the like.

Having described my invention, what I claim is set forth below.

1. Apparatus, comprising: at least one processor; and computer memoryholding computer program instructions executed by the processor toprovide: first data from which a future location path for a user isadapted to be displayed; and second data from which a future locationpath for at least one other person is adapted to be displayed overlaidon the future location path for the user, the at least one other personbeing associated with the user in a social network.
 2. An articlecomprising a non-transitory machine-readable storage medium that storesa program, the program adapted to be executed by a machine to providefuture location-based situation awareness to a user of a mobile device,the mobile device storing the user's calendar and contact information,the program comprising: program code to receive calendar data; programcode to receive contemporaneous location data; program code to use thereceived data to calculate, as a series of points, the user's futurelocations through time and space; program code to use the series ofpoints to determine a future location route to be traveled by the userbetween each successive location; and program code to represent theuser's future location route between a departure time and an arrivaltime.
 3. The article as described in claim 2 wherein the points areassociated with given time intervals.
 4. The article as described inclaim 3 wherein each time interval is 15 minutes.
 5. The article asdescribed in claim 2 wherein the program includes program code toassociate a social group tag with a location along the future locationroute.
 6. The article as described in claim 5 wherein the programincludes program code to identify a group and constituent members of thegroup associated with the social group tag.
 7. The article as describedin claim 6 wherein the program includes program code to generate afuture location path for at least one constituent member of the group.8. The article as described in claim 7 wherein the program includesprogram code to overlay the future location path for the at leastconstituent member of the group on the future location path for theuser.